
#ifndef _ICLASSMAP_H_
#define _ICLASSMAP_H_

#include <BClass>

namespace BWE
{
	class ClassMap : public BClass
	{
	public:
		ClassMap();

		virtual BClass* clone() const;

		void create(int argc, BValue* argv);
		void create_other(int argc, BValue* argv);
		void release(int argc, BValue* argv);

		void size(int argc, BValue* argv);
		void capacity(int argc, BValue* argv);

		void empty(int argc, BValue* argv);
		void reset(int argc, BValue* argv);
		void clear(int argc, BValue* argv);
		void relax(int argc, BValue* argv);

		void reserve(int argc, BValue* argv);
		void check(int argc, BValue* argv);
		void resort(int argc, BValue* argv);

		void contain(int argc, BValue* argv);
		void index(int argc, BValue* argv);

		void key(int argc, BValue* argv);
		void value(int argc, BValue* argv);

		void first(int argc, BValue* argv);
		void first_const(int argc, BValue* argv);

		void middle(int argc, BValue* argv);
		void middle_const(int argc, BValue* argv);

		void last(int argc, BValue* argv);
		void last_const(int argc, BValue* argv);

		void min(int argc, BValue* argv);
		void min_const(int argc, BValue* argv);

		void max(int argc, BValue* argv);
		void max_const(int argc, BValue* argv);

		void at(int argc, BValue* argv);
		void at_const(int argc, BValue* argv);

		void def(int argc, BValue* argv);
		void def_const(int argc, BValue* argv);

		void set(int argc, BValue* argv);

		void fill_value(int argc, BValue* argv);
		void fill_value_pos_size(int argc, BValue* argv);

		void insert_key(int argc, BValue* argv);
		void insert_key_value(int argc, BValue* argv);
		void insert_other(int argc, BValue* argv);

		void remove_key(int argc, BValue* argv);
		void remove_other(int argc, BValue* argv);
		void remove_pos_count(int argc, BValue* argv);

		void find(int argc, BValue* argv);

		void operator_bracket(int argc, BValue* argv);
		void operator_bracket_const(int argc, BValue* argv);

		void operator_square_bracket(int argc, BValue* argv);
		void operator_square_bracket_const(int argc, BValue* argv);

		void operator_assign(int argc, BValue* argv);
		void operator_append(int argc, BValue* argv);

		void operator_equal_other(int argc, BValue* argv);
		void operator_unequal_other(int argc, BValue* argv);

		void operator_equal(int argc, BValue* argv);

		void operator_less(int argc, BValue* argv);
		void operator_less_equal(int argc, BValue* argv);

		void operator_greater(int argc, BValue* argv);
		void operator_greater_equal(int argc, BValue* argv);

	};
}

#endif
